package endereco;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;


public class EnderecoDAOHibernate implements EnderecoDAO{

	private Session	session;

	public void setSession(Session session) {
		this.session = session;
	}

	public void salvar(Endereco endereco) {
		this.session.save(endereco);
	}

	public void atualizar(Endereco endereco) {

		this.session.update(endereco);
	}

	public void excluir(Endereco endereco) {
		this.session.delete(endereco);
	}

	public Endereco carregar(Integer codigo) {
		//TODO o hibernate nao conseguira fazer a carga caso seja passado o Endereco
		// no parametro, tem que ser diretamente a chave (integer)
		return (Endereco) this.session.get(Endereco.class, codigo);
	}

	public Endereco buscarPorLogin(String login) {
		String hql = "select c from Endereco c, Usuario u where u.login = :login";
		Query consulta = this.session.createQuery(hql);
		consulta.setString("login", login);

		//TODO mostrar primeiramente com o list e depois apresentar o uniqueResult
		return (Endereco) consulta.uniqueResult();
	}

	@SuppressWarnings("unchecked")
	public List<Endereco> listar() {
		return this.session.createCriteria(Endereco.class).list();
	}

}
